本文基本是对 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 的翻译精减.
安装前准备
各自独立的 hostname, MAC 地址, product_uuid, 关闭 Swap.
- Hostname:
hostname
- MAC 地址:
ip link
orifconfig -a
- Product UUID:
sudo cat /sys/class/dmi/id/product_uuid
- Swap:
free
检查端口 TCP 协议占用情况
Master Port 范围
- 6443 Kubernetes API 服务器端口
- 2379-2380 etcd 端口, kube-apiserver, etcd 使用
- 10250 Kubelet API 端口, 控制面板使用
- 10251 kube-scheduler 端口
- 10252 kube-controller-manager 端口
Worker Port 范围
- 10250 Kubelet API 端口, 控制面板使用
- 30000-32767 NodePort 服务对外端口
安装依赖环境
kubernetes.repo
1 | # /etc/yum.repos.d/kubernetes.repo |
k8s.conf
1 | # /etc/sysctl.d/k8s.conf |
install_prepare.sh
1 | # 禁用 SELinux |
安装 Docker
install_docker.sh
1 | sudo yum install -y yum-utils device-mapper-persistent-data lvm2 |
start_docker.sh
1 | sudo usermod -aG docker $(whoami) |
安装 Kubeadm
install_kubeadm.sh
1 | sudo cp -f kubernetes.repo /etc/yum.repos.d/kubernetes.repo |
start_kubelet.sh
1 | sudo systemctl daemon-reload |
分装 Master 节点 和 Node 节点
Master 节点安装 Helm
install_helm.sh
1 | curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash |
初始化 Master 节点
start_master.sh
1 | sudo kubeadm init |
安装完成后, 可以看到类似如下的内容:
1 | Your Kubernetes control-plane has initialized successfully! |
其中主要内容分为 3 步骤:
- 拷贝授权文件
1 | mkdir -p $HOME/.kube |
- 在 Master Node 下载安装 flannel
1 | wget "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml" -O kube-flannel.yaml |
- 在 Worker Node 加入集群
1 | sudo kubeadm join 192.168.254.7:6443 --token m88iap.q2pa76z019f9nmza \ |
其中最后一句, 即为初始化 Node 节点.
初始化 Node 节点
start_node.sh
1 | sudo kubeadm join 192.168.254.7:6443 --token m88iap.q2pa76z019f9nmza \ |
卸载全部 一切归零
uninstall_k8s.sh
1 | # 删除旧版 |